package com.zs.lib_base.http

import com.zs.lib_base.bean.*
import com.zs.lib_base.model.*
import io.reactivex.rxjava3.core.Observable
import okhttp3.MultipartBody
import okhttp3.RequestBody
import retrofit2.http.*


interface RetrofitService {

    /**
     * 获取兴趣选择
     */
    @POST("userMessage/getInterest")
    fun getInterestList(): Observable<InterestListBean>

    /**
     * 选择兴趣
     */
//    @POST("userMessage/chooseInterest")
//    fun chooseInterest(@Body requestBody: RequestBody): Observable<String>
    @FormUrlEncoded
    @POST("userMessage/chooseInterest")
    fun chooseInterest(@Field("ids") ids: String,@Field("token") token: String): Observable<ChoseInterestBean>

    /**
     * 搜索历史
     */
    @POST("search_history/queryContentSearchHistoryList")
    fun queryContentSearchHistoryList(@Query("token") token: String): Observable<SearchHistoryListBean>

    /**
     * 搜索
     */
    @POST("search_history/integratedContentSearch")
    fun integratedContentSearch(@Query("token") token: String,@Query("keyword") keyword: String): Observable<BaseData<SearchBean>>

    /**
     * 举报 不感兴趣
     */
    @POST("newsTtrend/reportNewsTrend")
    fun reportNewsTrend(@Body requestBody: RequestBody): Observable<BaseData<SearchBean>>

    /**
     * 热点
     */
    @POST("hotspot/queryHotspotList")
    fun queryHotspotList(): Observable<BaseData<MutableList<HotListBean>>>

    /**
     * 关注
     */
    @POST("newsTtrend/follow")
    fun follow(@Query("token") token: String,@Query("userId") userId: Int): Observable<BaseData<NullBean>>
    /**
     * 取消关注
     */
    @POST("newsTtrend/cancelfollow")
    fun cancelfollow(@Query("token") token: String,@Query("userId") userId: Int): Observable<BaseData<NullBean>>
    /**
     * 系统消息
     */
    @POST("message/getSystemMessage")
    fun getSystemMessage(@Query("token") token: String): Observable<BaseData<MutableList<SystemBean>>>
    /**
     * 评论
     */
    @POST("message/getCommentMessage")
    fun getCommentMessage(@Query("token") token: String,@Query("start") start: Int,@Query("limit") limit: String): Observable<BaseData<CommentBean>>
    /**
     * 点赞
     */
    @POST("message/getZanMessage")
    fun getZanMessage(@Query("token") token: String,@Query("start") start: Int,@Query("limit") limit: String): Observable<BaseData<UpBean>>
    /**
     * 粉丝
     */
    @POST("message/getFans")
    fun getFans(@Query("token") token: String): Observable<BaseData<MutableList<MyFansListModel>>>
    /**
     * 发布动态
     */
    @POST("newsTtrend/publishTrend")
    fun publishTrend(@Body requestBody: RequestBody): Observable<BaseData<PublishBean>>
    /**
     * 发布文章
     */
    @POST("newsTtrend/publishNews")
    fun publishArtical(@Body requestBody: RequestBody): Observable<BaseData<PublishBean>>

    /**
     * 上传图片
     */
    @Multipart
    @POST("newsTtrend/img")
    fun uploadImage(@Query("token") token: String,@Part file: MultipartBody.Part): Observable<BaseData<String>>

    /**
     * 草稿箱
     */
    @POST("newsTtrendHomePage/draftBox")
    fun draftBox(@Query("token") token: String,@Query("start") start: Int,@Query("limit") limit: Int): Observable<BaseData<DraftBoxBean>>
    /**
     * 删除动态 文章
     */
    @POST("newsTtrend/deleteNews")
    fun deleteNews(@Query("token") token: String,@Query("type") type: Int,@Query("id") id: Int): Observable<BaseData<NullBean>>

    /**
     * 用户基本信息
     */
    @POST("individualCenter/baseInfo")
    fun baseInfo(@Query("token") token: String,@Query("otherUserNo") otherUserNo: String,@Query("userName") userName: String,@Query("type") type: String): Observable<BaseData<UserBaseInfo>>
    /**
     * 个人主页 发布 动态 文章
     */
    @POST("individualCenter/mainList")
    fun mainList(@Query("token") token: String,@Query("userId") userId: String,@Query("userName") userName: String,@Query("type") type: String,@Query("start") start: Int,@Query("limit") limit: String): Observable<BaseData<PersonPageBean>>

    /**
     * 删除 动态文章
     */
    @POST("newsTtrend/deleteNews")
    fun deleteNews(@Query("token") token: String,@Query("type") type: String,@Query("id") id: String): Observable<BaseData<PersonPageBean>>

    /**
     * 动态详情
     */
    @POST("newsTtrendHomePage/getNewsTrendById")
    fun getNewsTrendById(@Query("token") token: String,@Query("id") id: String): Observable<BaseData<DynamicDetailBean>>
    /**
     * 删除动态详情
     */
    @POST("newsTtrendHomePage/getNewsTrendById")
    fun getDeleteNewsTrendById(@Query("token") token: String,@Query("id") id: String): Observable<BaseData<DynamicDeleteDetailBean>>

    /**
     * 首页广告
     */
    @POST("newsTtrendHomePage/pageAdvert")
    fun pageAdvert(@Query("token") token: String): Observable<BaseData<MutableList<AdBean>>>
    /**
     * 删除草稿箱
     */
    @POST("newsTtrend/deleteDraftBox")
    fun deleteDraftBox(@Query("token") token: String,@Query("type") type: String,@Query("id") id: String): Observable<BaseData<String>>
    /**
     * 根据id获取评论
     */
    @POST("newsTtrend/getComment")
    fun getComment(@Query("token") token: String,@Query("type") type: Int,@Query("id") id: Int): Observable<BaseData<MutableList<DetailCommentBean>>>
    /**
     * 点赞 取消点赞
     */
    @POST("newsTtrend/like")
    fun like(@Query("token") token: String,@Query("id") id: Int,@Query("type") type: Int): Observable<BaseData<String>>
    /**
     * 评论
     */
    @POST("newsTtrend/comment")
    fun comment(@Query("token") token: String,@Query("id") id: Int,@Query("type") type: Int,@Query("content") content: String): Observable<BaseData<String>>
    /**
     * 收藏
     */
    @POST("collectionBrowsing/addCollections")
    fun addCollection(@Query("token") token: String,@Query("id") id: Int,@Query("type") type: Int): Observable<BaseData<String>>
    /**
     * 取消收藏
     */
    @POST("collectionBrowsing/deleteCollections")
    fun deleteCollections(@Query("token") token: String,@Query("id") id: Int,@Query("type") type: Int): Observable<BaseData<String>>
    /**
     * 转发动态
     */
    @POST("newsTtrend/forwardNewsTrend")
    fun forwardNewsTrend(@Body requestBody: RequestBody): Observable<BaseData<NullBean>>
    /**
     * 获取指数
     */
    @POST("index/getVarietyIndex")
    fun getVarietyIndex(): Observable<BaseData<MutableList<SouthwestBean>>>
    /**
     * 获取指数详情
     */
    @POST("index/getVarietyIndexDetail")
    fun getVarietyIndexDetail(@Query("varietyId") varietyId: String,@Query("areaId") areaId: String): Observable<BaseData<SouthestDetailBean>>
    /**
     * 浏览历史
     */
    @POST("collectionBrowsing/myBrowsings")
    fun myBrowsings(@Query("token") token: String,@Query("type") type: String,@Query("start") start: Int,@Query("limit") limit: String): Observable<BaseData<PersonPageBean>>
    /**
     * 收藏
     */
    @POST("individualCenter/collections")
    fun collections(@Query("token") token: String,@Query("type") type: String,@Query("start") start: Int,@Query("limit") limit: String): Observable<BaseData<PersonPageBean>>

    /**
     * 修改用户头像 公司名称 性别
     */
    @POST("userMessage/saveUser")
    fun saveUser(@Query("token") token: String,@Query("type") type: String,@Query("start") start: Int,@Query("limit") limit: String): Observable<BaseData<PersonPageBean>>

    /**
     * 删除评论
     */
    @POST("newsTtrend/deleteComment")
    fun deleteComment(@Query("token") token: String,@Query("id") id: String): Observable<BaseData<String>>

   /**
     * 搜索联系人历史
     */
    @POST("message/searchHistory")
    fun searchHistory(@Query("token") token: String): Observable<BaseData<MutableList<SearchContactHistoryBean>>>

    /**
     * 获取兴趣
     */
    @POST("userMessage/myInterest")
    fun myInterest(@Query("token") token: String): Observable<BaseData<MutableList<InterestListBean.Data>>>
    /**
     * 热点列表
     */
    @POST("newsTtrendHomePage/hotList")
    fun hotList(@Query("token") token: String,@Query("hotId") hotId: String): Observable<BaseData<HotDetailBean>>


    /**
     * 是否屏蔽
     */
    @POST("userMessage/isShield")
    fun isShield(@Query("token") token: String,@Query("toUserId") toUserId: String): Observable<BaseData<String>>

    /**
     * 删除屏蔽
     */
    @POST("userMessage/removeShieldNew")
    fun removeShieldNew(@Query("token") token: String,@Query("userName") userName: String,@Query("userId") userId: String): Observable<BaseData<String>>

    /**
     * 屏蔽动态
     */
    @POST("userMessage/setShieldNew")
    fun setShieldNew(@Query("token") token: String,@Query("userName") userName: String,@Query("userId") userId: String): Observable<BaseData<String>>

    /**
     * 屏蔽电话
     */
    @POST("userMessage/setShieldPhone")
    fun setShieldPhone(@Query("token") token: String,@Query("userName") userName: String): Observable<BaseData<String>>
    /**
     * 删除屏蔽电话
     */
    @POST("userMessage/removeShieldPhone")
    fun removeShieldPhone(@Query("token") token: String,@Query("userName") userName: String): Observable<BaseData<String>>
    /**
     * 是否屏蔽打电话
     */
    @POST("userMessage/isShieldPhone")
    fun isShieldPhone(@Query("token") token: String,@Query("toUserId") toUserId: String): Observable<BaseData<String>>
    /**
     * 获取消息数量
     */
    @POST("message/getMessageCount")
    fun getMessageCount(@Query("token") token: String): Observable<BaseData<ConversationModel>>
    /**
     * 修改个人信息
     */
    @POST("userMessage/saveUser")
    fun saveUser(@Query("token") token: String,@Query("avatar") avatar: String,@Query("gender") gender: String,@Query("personName") personName: String): Observable<BaseData<NullBean>>
    /**
     * 我的关注
     */
    @POST("individualCenter/attentions")
    fun attentions(@Query("token") token: String): Observable<BaseData<MutableList<FollowModel>>>
    /**
     * 推荐关注
     */
    @POST("individualCenter/recommendAttentions")
    fun recommendAttentions(): Observable<BaseData<MutableList<RecommentFollowModel>>>
    /**
     * 一键关注
     */
    @POST("newsTtrend/oneKeyFollow")
    fun oneKeyFollow(@Query("token") token: String,@Query("userIds") userIds: String): Observable<BaseData<String>>

    /**
     * 获取所有热点
     */
    @POST("newsTtrend/selectHotList")
    fun selectHotList(): Observable<BaseData<MutableList<MainHotBean>>>
    /**
     * 获取视频详情
     */
    @POST("newsTtrendHomePage/getVideoById")
    fun getVideoById(@Query("token") token: String,@Query("movieId") movieId: String): Observable<BaseData<VideoDetailBean>>
    /**
     * 获取文章详情
     */
    @POST("newsTtrendHomePage/getNewsById")
    fun getNewsById(@Query("token") token: String,@Query("id") movieId: String): Observable<BaseData<ArticleDetailBean>>
    /**
     * 获取音频详情
     */
    @POST("newsTtrendHomePage/getAudioById")
    fun getAudioById(@Query("token") token: String,@Query("id") movieId: String): Observable<BaseData<DynamicDetailBean>>
    /**
     * 转发数量
     */
    @POST("newsTtrend/addForwardCount")
    fun addForwardCount(@Query("token") token: String,@Query("id") movieId: String,@Query("type") type: String): Observable<BaseData<String>>

    /**
     * 对方是否屏蔽电话
     */
    @POST("userMessage/isShieldPhoneByOther")
    fun isShieldPhoneByOther(@Query("token") token: String,@Query("userName") userName: String): Observable<BaseData<String>>

    /**
     * 获取推荐关注
     */
    @POST("newsTtrend/recommendFollowUser")
    fun recommendFollowUser(@Query("token") token: String): Observable<BaseData<MutableList<RecommentFollowUserBean>>>

    /**
     * 搜索联系人
     */
    @POST("message/searchContact")
    fun searchContact(@Query("token") token: String,@Query("keyword") keyword: String): Observable<BaseData<MutableList<SearchContactBean>>>

    /**
     * 编辑文章
     */
    @POST("newsTtrend/getEditNews")
    fun getEditNews(@Query("token") token: String,@Query("id") id: String): Observable<BaseData<EditArticleBean>>
    /**
     * 编辑动态
     */
    @POST("newsTtrend/getEditTrend")
    fun getEditTrend(@Query("token") token: String,@Query("id") id: String): Observable<BaseData<EditDynamicBean>>
    /**
     * 获取分享code
     */
    @POST("h5Login/getFriendUrl")
    fun getFriendUrl(@Query("token") token: String): Observable<BaseData<String>>

    /**
     * 获取商家信息
     */
    @POST("merchat/getZMerchatInfo")
    fun getZMerchatInfo(@Query("token") token: String,@Query("id") id: String): Observable<BaseData<MerchatInfoBean>>

    /**
     * 企业地图分享
     */
    @POST("enterprice/shareApp")
    fun shareApp(@Body requestBody: RequestBody): Observable<BaseData<SharePopularityBean>>

    /**
     * 企业地图分享
     */
    @POST("enterprice/shareApp")
    fun shareApp2(@Query("merchatId") merchatId: String,@Query("regid") regid: String,@Query("token") token: String): Observable<BaseData<SharePopularityBean>>


    /**
     * 企业地图  钢厂
     */
    @POST("merchat/listPlaceSteel")
    fun listPlaceSteel(@Query("token") token: String): Observable<BaseData<MutableList<SteelBean>>>
    /**
     * 采购基础数据  钢厂
     */
    @POST("plan/listPlaceSteel")
    fun planListPlaceSteel(@Query("token") token: String): Observable<BaseData<MutableList<SteelBean>>>

    /**
     * 采购基础数据  钢厂
     */
    @POST("merchat/getAllAreaCombination")
    fun getAllAreaCombination(@Query("token") token: String): Observable<BaseData<MutableList<MerchantProvinceAddressBean>>>

    /**
     * 企业地图基础数据，查询种类、品名、材质、规格四级联动数据
     */
    @POST("merchat/listFourBase")
    fun listFourBase(@Query("token") token: String): Observable<BaseData<MutableList<MerchatFourBean>>>
    /**
     * 上传视频
     */
    @Multipart
    @POST("merchat/uploadVideo")
    fun uploadVide(@Query("token") token: String,@Query("dir") dir: String,@Part file:MultipartBody.Part): Observable<BaseData<UploadVideoBean>>
    /**
     * 添加企业
     */
    @POST("merchat/addMerchatInfo")
    fun addMerchatInfo(@Body requestBody: RequestBody): Observable<BaseData<String>>

    /**
     * 添加钢厂
     */
    @POST("merchat/addSteel")
    fun addSteel(@Query("token") token: String,@Query("name") name: String): Observable<BaseData<SteelBean>>

    /**
     * 是否有刚粒奖励
     */
    @POST("newsTtrend/rewardStatus")
    fun rewardStatus(@Query("token") token: String): Observable<BaseData<String>>

    /**
     * 奖励刚粒
     */
    @POST("newsTtrend/readReward")
    fun readReward(@Query("token") token: String,@Query("id") id: String,@Query("type") type: String,@Query("operType") operType: String): Observable<BaseData<RewardBean>>


    /***************************** 14天打卡活动 *****************************/

    /**
     * 是否在打卡活动期内
     */
    @POST("punchIn/isStartActivity")
    fun isStartActivity(): Observable<BaseData<String>>

    /**
     * 开启打卡
     */
    @POST("punchIn/startActivity")
    fun startActivity(@Query("token") token: String,@Query("id") id: String,@Query("type") type: String): Observable<BaseData<StartClockBean>>

    /**
     * 活动状态
     */
    @POST("punchIn/getActivityStatus")
    fun getActivityStatus(): Observable<BaseData<ActivityStatusBean>>

    /**
     * 获取我的14天打卡活动状态
     */
    @POST("punchIn/getMyPunchInInfo")
    fun getMyPunchInInfo(@Query("token") token: String): Observable<BaseData<ActivityInfoBean>>

    /**
     * 价格指数
     */
    @POST("index/getVarietyIndex")
    fun getVarietyIndex(@Query("token") token: String): Observable<BaseData<MutableList<VarietyIndexListBean>>>

    /**
     * 地区价格指数
     */
    @POST("index/getAreaIndexList")
    fun getAreaIndexList(): Observable<BaseData<MutableList<AreaIndexListBean>>>

    /**
     * 领取会员
     * entrance （1价格2库存3数据中心4vip文章5我的6周预测7半月预测8明日预测）
     */
    @POST("userMessage/getMembership")
    fun getMembership(@Query("token") token: String,@Query("entrance") entrance: String): Observable<BaseData<String>>

    /**
     * 添加推送
     * (1-订阅推送，2-互动推送，3-内容推送)
     */
    @POST("message/addPush")
    fun addPush(@Query("token") token: String,@Query("type") type: Int): Observable<BaseData<String>>

    /**
     * 删除推送
     * (1-订阅推送，2-互动推送，3-内容推送)
     */
    @POST("message/deletePush")
    fun deletePush(@Query("token") token: String,@Query("type") type: Int): Observable<BaseData<String>>

    /**
     * 获取推送状态
     * (1-订阅推送，2-互动推送，3-内容推送)
     */
    @POST("message/getUserPushStatus")
    fun getUserPushStatus(@Query("token") token: String): Observable<BaseData<MutableList<PushStatusBean>>>

}